package com.example.wxsdklibrary.wx;

import android.content.Context;
import android.util.Log;

import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

/**
 * 作者：huyi
 * 日期：2020/12/17 10:08
 * 描述：
 */
public class WxApiGlobal {

    private final static String TAG = WxApiGlobal.class.getName();

    private IWXAPI api;
    /**
     * 单例模式
     **/
    private static WxApiGlobal mWxApiGlobal = null;

    /**
     * 构造函数私有化
     **/
    private WxApiGlobal() {
    }

    /**
     * 公有的静态函数，对外暴露获取单例对象的接口
     **/
    public static WxApiGlobal getInstance() {
        if (mWxApiGlobal == null) {
            synchronized (WxApiGlobal.class) {
                if (mWxApiGlobal == null) {
                    mWxApiGlobal = new WxApiGlobal();
                }
            }
        }
        return mWxApiGlobal;
    }


    public void init(Context context, String appId) {
        init(context, appId, true);
    }

    public void init(Context context, String appId, boolean checkSignature) {
        api = WXAPIFactory.createWXAPI(context, appId, checkSignature);
        api.registerApp(appId);
    }

    /**
     * 获取IWXAPI
     */
    public IWXAPI getWXAPI() {
        check();
        return api;
    }
    /**
     * 检查 IWXAPI 是否已注册，未注册则抛出空指针异常
     */
    private void check() {
        if (api == null) {
            Log.e(TAG, "请先使用WxApiGlobal.getInstance().init() 方法初始化");
            throw new NullPointerException("请先使用WxApiGlobal.getInstance().init() 方法初始化");
        }
    }
}
